// get_arg.h
//

#if !defined(GETARG_H)
#define GETARG_H

#include <string>
//#include <iosfwd>
#include <sstream>
#include <iostream>
#include <fstream>

#include <program_options_helper.h>

class t_program_args : public program_options_helper::t_std_program_args_with_errors
{
	friend
	bool process_command_line_options(int argc, char* argv[], t_program_args& args);
public:
						t_program_args():
								kaks_log_to_file(false){}
	bool				results_header;
	std::string			file_cdna;
	std::string			regex ;
	bool				yn00;
	bool				f61;
	bool				aligned;
	bool				all_vs_all;
	std::string			tempdir;
	bool				keep_tempdir;
	std::string			paml;
	
	std::string			comment_letters;

	std::ostream&		KAKS_LOG(){return kaks_log_to_file ? f_kaks_err_log : IGNORE();}

	// for initializing this struct
	void				open_log_files();
private:
	std::string			kaks_error_log_name;
	bool				kaks_log_to_file;
	std::ofstream		f_kaks_err_log;
};

bool process_command_line_options(int argc, char* argv[], t_program_args& args);
#endif //GETARG_H
